package com.ftg.learn.chapter10;

/**
 * 迁移问题
 *  {1,2,3,4,5,6,7,8}
 *  {1,2,3,4}
 * @author KangJx
 * @date 2021/7/16
 */
public class ArrayInit {

    /**
     * {1,2,3,4,5}
     * 把数组arr里面的元素下标小于target的元素迁移新数组里
     * @param arr
     * @param target
     */
    public int[] moveVal(int[] arr,int target){
        //自己分析下，如果 target - 数时反向迁移
        //如果 方法是 Arr begin end
        if(target ==0){
            return arr;
        }

        if(target < 0){
            return moveVal(arr,arr.length + target,arr.length);
        }

        int[] reArr = new int[target > arr.length ? arr.length: target];
        for(int i = 0,len = reArr.length;i < len;i++){
            reArr[i] = arr[i];
        }
        return reArr;
    }

    /**
     * [begin,end)
     * @param arr
     * @param begin
     * @param end
     * @return
     */
    public int[] moveVal(int[] arr,int begin,int end){
        if(begin - end  > 0 || end > arr.length){
            //异常 err- 1001 : 。。。。。
            return arr;
        }


        int[] reArr = new int[end - begin];
        for(int i = 0 ,len  = reArr.length;i < len;i++){
            reArr[i] = arr[begin + i];
        }
        return reArr;
    }

}
